package com.ruoyi.ams.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ams.domain.vo.IotAssetInfo;
import com.ruoyi.common.core.domain.AsmsAssetFullInfo;
import com.ruoyi.common.core.domain.model.AmsAssetInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
 * 资产基础信息Mapper接口
 * 
 * @author yfkj
 * @date 2021-10-15
 */@Mapper
public interface AmsAssetInfoMapper extends BaseMapper<AmsAssetInfo>
{
    /**
     * 查询资产基础信息
     * 
     * @param assetId 资产基础信息主键
     * @return 资产基础信息
     */
    public AmsAssetInfo selectAmsAssetInfoByAssetId(Long assetId);

    /**
     * 查询资产基础信息列表
     * 
     * @param amsAssetInfo 资产基础信息
     * @return 资产基础信息集合
     */
    public List<AmsAssetInfo> selectAmsAssetInfoList(AmsAssetInfo amsAssetInfo);

    /**
     * 新增资产基础信息
     * 
     * @param amsAssetInfo 资产基础信息
     * @return 结果
     */
    public int insertAmsAssetInfo(AmsAssetInfo amsAssetInfo);

    /**
     * 修改资产基础信息
     * 
     * @param amsAssetInfo 资产基础信息
     * @return 结果
     */
    public int updateAmsAssetInfo(AmsAssetInfo amsAssetInfo);

    /**
     * 删除资产基础信息
     * 
     * @param assetId 资产基础信息主键
     * @return 结果
     */
    public int deleteAmsAssetInfoByAssetId(Long assetId);

    /**
     * 批量删除资产基础信息
     * 
     * @param assetIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAmsAssetInfoByAssetIds(Long[] assetIds);

    public List<AmsAssetInfo> getAmsAssetInfoByDeptIds(@Param("list") List<Long> deptIds, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("assetTemplateId") Long assetTemplateId);


    public List<AmsAssetInfo> getAllLock(@Param("list") List<Long> deptIds);
    /**
     * 获取部门机柜锁数量
     * @param deptIds
     * @return
     */
    List<HashMap> getDeptAssetNumber(@Param("list") List<Long> deptIds);

    /**
     * 获取物联网资产基础信息列表
     * @param useDeptId
     * @param addressName
     * @return
     */
    List<IotAssetInfo> getIotAssetBasicList(@Param("useDeptId") Long useDeptId, @Param("addressName") String addressName);

    public List<AsmsAssetFullInfo> getAllAssetInfoByDeptIds(@Param("list") List<Long> deptIds, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("assetTemplateId") Long assetTemplateId);

    public List<AsmsAssetFullInfo> getAllAssetInfo(@Param("list") List<Long> deptIds);

}
